home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
HPAVC
/
HPAVC CD-ROM.iso
/
ALF-CHAT.ZIP
/
HOTCHAT.PPE
(
.txt
)
< prev
next >
Wrap
PCBoard Programming Language Executable
|
1994-07-24
|
24KB
|
1,455 lines
;------------------------------------------------------------------------------
; .ss.
; `²²'
; .,sS$Ss,,s$ .,sS$$$Ss. .,sS$Ss,,s$ .ss. .sSs.
; .d$$²^°²$$$$'.d$P²°^^²$P'.d$$²^°²$$$$'.$$$' .$$$²Sb,.
; $$$' .$$$' $$$²Sçsµ²' .$$$' .$$$'.$$$' .$$$' `$$b.
; $$$b,,d$$$' ,$$$b,....,s$$$$b,,d$$$'.$$$;.,$$$' ;$$$
; `²S$$S²²S$$S²°²S$$$$S²°°²S$$$$$$',$$S²°²S$S'.sS$$$P²'
; .sS²°$$$²²°"' d²°'
; .$$² .$$'
; $$$.,d$$'
; `²S$$S²'
;------------------------------------------------------------------------------
; P.P.L.X. 2.OO (C)1996 - Lone Runner / AEGiS CoRP'96
;------------------------------------------------------------------------------
; PPE 2.OO (plain) - Analysis ON - Postprocessing ON
;------------------------------------------------------------------------------
Boolean BOOLEAN001
Integer INTEGER001
Integer INTEGER002
Integer INTEGER003
Integer INTEGER004
Integer INTEGER005
Integer INTEGER006
Integer INTEGER007
Integer INTEGER008
Integer INTEGER009
Integer INTEGER010
Integer INTEGER011
Integer INTEGER012
Integer INTEGER013
Integer INTEGER014
Integer INTEGER015
Integer INTEGER016
Integer INTEGER017
Integer INTEGER018
Integer INTEGER019
String STRING001
String STRING002
String STRING003
String STRING004
String STRING005
String STRING006
String STRING007
String STRING008
String STRING009
String STRING010
String STRING011
String STRING012
String STRING013
String STRING014
String STRING015
String STRING016
String STRING017
String STRING018
String STRING019
String STRING020
String STRING021
String STRING022
String STRING023
String STRING024
String STRING025
String STRING026
String STRING027
String STRING028
String STRING029
String STRING030
String STRING031
String STRING032
String STRING033
String STRING034
String STRING035
String STRING036
String STRING037
String STRING038
String STRING039
String STRING040
String STRING041
String STRING042
String STRING043
String STRING044
String STRING045
String STRING046
String STRING047
String STRING048
String STRING049
String STRING050
String STRING051
String STRING052
String STRING053
String STRING054
String STRING055
String STRING056
String STRING057
String STRING058
String STRING059
String STRING060
String STRING061
String STRING062
String STRING063
String STRING064
String STRING065
String STRING066
String STRING067
String STRING068
String STRING069
String STRING070
String STRING071
String STRING072
String STRING073
String STRING074
String STRING075
String STRING076
String STRING077
String STRING078
String STRING079
String STRING080
String STRING081
String STRING082
String STRING083
String STRING084
String STRING085
String STRING086
String STRING087
String STRING088
Time TIME001
;------------------------------------------------------------------------------
STRING009 = "3.1b"
STRING001 = ""
INTEGER001 = ""
STRING002 = ""
STRING003 = ""
INTEGER009 = 1
TIME001 = Sec(Time())
STRING022 = "General Discussion"
STRING036 = Chr(27)
STRING033 = " "
STRING011 = Chr(13)
STRING012 = STRING036 + "["
STRING013 = STRING012 + "0;0H"
STRING014 = STRING012 + "K"
STRING025 = Chr(8)
STRING026 = PcbNode()
STRING015 = PPEPath() + "HOTHELP"
STRING016 = PPEPath() + "HOTSTAT"
STRING088 = PPEPath() + "HOTTIME"
INTEGER010 = 0
STRING035 = PPEPath() + "HOTACH"
STRING017 = PPEPath() + "HOTMENU"
STRING019 = PPEPath() + "HOTTEXT"
If (Exist(STRING019 + LangExt())) Then
STRING019 = STRING019 + LangExt()
Endif
STRING034 = PPEPath() + "HOTACT"
If (Exist(STRING034 + LangExt())) Then
STRING034 = STRING034 + LangExt()
Endif
STRING018 = PPEPath() + "HOTCFG"
STRING020 = ""
STRING021 = ""
BOOLEAN001 = 0
STRING024 = ""
INTEGER011 = 0
INTEGER012 = 0
INTEGER013 = 0
INTEGER014 = 0
INTEGER015 = 0
INTEGER017 = ReadLine(STRING018, 2)
INTEGER018 = ReadLine(STRING018, 3)
INTEGER019 = ReadLine(STRING018, 6)
STRING039 = ReadLine(STRING018, 7)
STRING040 = ReadLine(STRING018, 8)
STRING041 = ReadLine(STRING019, 1)
STRING042 = ReadLine(STRING019, 5)
STRING043 = ReadLine(STRING019, 6)
STRING044 = ReadLine(STRING019, 7)
STRING045 = ReadLine(STRING019, 8)
STRING046 = ReadLine(STRING019, 9)
STRING047 = ReadLine(STRING019, 10)
STRING048 = ReadLine(STRING019, 11)
STRING049 = ReadLine(STRING019, 12)
STRING050 = ReadLine(STRING019, 13)
STRING051 = ReadLine(STRING019, 14)
STRING052 = ReadLine(STRING019, 15)
STRING053 = ReadLine(STRING019, 16)
STRING054 = ReadLine(STRING019, 17)
STRING055 = ReadLine(STRING019, 18)
STRING056 = ReadLine(STRING019, 19)
STRING057 = ReadLine(STRING019, 20)
STRING058 = ReadLine(STRING019, 21)
STRING059 = ReadLine(STRING019, 22)
STRING060 = ReadLine(STRING019, 23)
STRING061 = ReadLine(STRING019, 24)
STRING062 = ReadLine(STRING019, 25)
STRING063 = ReadLine(STRING019, 26)
STRING064 = ReadLine(STRING019, 27)
STRING065 = ReadLine(STRING019, 28)
STRING066 = ReadLine(STRING019, 29)
STRING067 = ReadLine(STRING019, 30)
STRING068 = ReadLine(STRING019, 31)
STRING069 = ReadLine(STRING019, 32)
STRING070 = ReadLine(STRING019, 33)
STRING071 = ReadLine(STRING019, 34)
STRING072 = ReadLine(STRING019, 35)
STRING073 = ReadLine(STRING019, 36)
STRING074 = ReadLine(STRING019, 37)
STRING075 = ReadLine(STRING019, 38)
STRING076 = ReadLine(STRING019, 39)
STRING077 = ReadLine(STRING019, 40)
STRING078 = ReadLine(STRING019, 41)
STRING079 = ReadLine(STRING019, 42)
STRING080 = ReadLine(STRING019, 43)
STRING081 = ReadLine(STRING019, 44)
STRING082 = ReadLine(STRING019, 45)
STRING083 = ReadLine(STRING019, 46)
STRING084 = ReadLine(STRING019, 47)
STRING085 = ReadLine(STRING019, 48)
STRING086 = ReadLine(STRING019, 49)
STRING087 = ReadLine(STRING019, 50)
If (Exist(PPEPath() + "HOTCHAT.KEY")) Then
FClose 4
FOpen 4, PPEPath() + "HOTCHAT.KEY", 2, 0
FGet 4, STRING005
FGet 4, STRING006
FGet 4, STRING007
FGet 4, STRING008
FClose 4
INTEGER002 = 1
STRING001 = STRING005
STRING002 = STRING006
STRING003 = STRING007
STRING004 = STRING008
Gosub LABEL054
Else
INTEGER005 = MinLeft() - 10
INTEGER006 = 0 - INTEGER005
AdjTime INTEGER006
INTEGER010 = INTEGER005
STRING001 = " DEMO EVALUATION COPY"
STRING002 = "PLEASE ASK SYSOP TO REGISTER HOTCHAT"
STRING003 = " SUPPORT SHAREWARE!"
STRING004 = " "
Gosub LABEL054
Gosub LABEL055
Endif
Newlines 1
GetUser
If (U_Expert == 1) Then
BOOLEAN001 = 1
Else
BOOLEAN001 = 0
Endif
If (ReadLine(STRING018, 1) == "0") Then
STRING023 = U_Name()
ElseIf (U_Alias > "") Then
STRING023 = U_Alias
Else
STRING023 = U_Name()
Endif
INTEGER005 = Len(STRING023)
STRING032 = ""
INTEGER006 = 15 - INTEGER005
If (INTEGER006 > 0) Then
STRING032 = Space(INTEGER006)
Endif
If (INTEGER005 > 15) Then
STRING023 = Left(STRING023, 15)
Endif
STRING027 = String(INTEGER009) + "-@X0D(@X0E" + STRING026 + "@X0D)[@X0B" + STRING023 + STRING032 + "@X0D] @X0F: "
RdUNet PcbNode()
WrUNet PcbNode(), "G", STRING023, UN_City(), "HOT TUB " + String(INTEGER009), ""
Cls
Newlines 1
PrintLn STRING043
FClose 4
FOpen 4, STRING034, 2, 0
Newlines 1
PrintLn STRING044
Print "@X08---------------------------"
FreshLine
INTEGER006 = 0
For INTEGER005 = 1 To INTEGER019
RdUNet INTEGER005
If (Upper(Left(UN_Oper(), 7)) == "HOT TUB") Then
Gosub LABEL045
If (Len((UN_Name() < 16))) Then
INTEGER006 = INTEGER006 + Len(UN_Name())
STRING020 = UN_Name()
Goto LABEL001
Endif
INTEGER006 = INTEGER006 + 15
STRING020 = Left(UN_Name(), 15)
:LABEL001
If (INTEGER006 > 55) Then
INTEGER006 = 0
FreshLine
Print "@X0B" + STRING020 + ", "
Continue
Endif
Print "@X0B" + STRING020 + ", "
Endif
Next
Backup 2
Print " "
PrintLn "@X0F"
Newlines 1
GetUser
If (INTEGER017 == 1) Then
Log U_Name() + " Entered Hot Chat", 0
Endif
STRING020 = "@X0B" + STRING023 + " " + STRING041
Gosub LABEL046
PrintLn STRING020
STRING020 = "*" + STRING020
Gosub LABEL052
STRING028 = STRING020
STRING020 = STRING020 + Chr(7)
Gosub LABEL050
STRING020 = ""
:LABEL002
FreshLine
INTEGER008 = 0
STRING024 = ""
STRING021 = ""
While (STRING024 <> STRING011) Do
STRING024 = Inkey()
If ((Len(STRING021) == 0) && (Time() - TIME001 > INTEGER018)) Then
Gosub LABEL047
Endif
If ((Len(STRING021) == 199) && (STRING024 <> STRING011)) Then
PrintLn "@X0A Line limit reached...@X0F"
Gosub LABEL046
Break
Endif
If (((((((((((STRING024 == "PGUP") || (STRING024 == "PGDN")) || (STRING024 == "LEFT")) || (STRING024 == "RIGHT")) || (STRING024 == "INS")) || (STRING024 == "DEL")) || (STRING024 == "HOME")) || (STRING024 == "END")) || (STRING024 == "UP")) || (STRING024 == "DOWN")) || (STRING024 == STRING036)) Then
STRING024 = ""
Endif
If ((STRING024 == STRING025) && (Len(STRING021) > 0)) Then
STRING021 = Left(STRING021, Len(STRING021) - 1)
Backup 1
Print " "
Backup 1
Endif
If ((((STRING024 > "") && (STRING024 <> STRING011)) && (STRING024 <> Chr(0))) && (STRING024 <> STRING025)) Then
STRING021 = STRING021 + STRING024
Print STRING039 + STRING024
Endif
EndWhile
If (Upper(Left(STRING021, 3)) == "/S,") Then
Gosub LABEL006
Goto LABEL002
Endif
If (Upper(Left(STRING021, 3)) == "/AL") Then
Gosub LABEL010
Goto LABEL002
Endif
If (Upper(Left(STRING021, 3)) == "/A,") Then
Gosub LABEL011
Goto LABEL002
Endif
If (Upper(Left(STRING021, 4)) == "/AS,") Then
Gosub LABEL014
Goto LABEL002
Endif
If (Upper(Left(STRING021, 4)) == "/INV") Then
Gosub LABEL017
Goto LABEL002
Endif
If (Upper(Left(STRING021, 4)) == "/PRI") Then
Gosub LABEL018
Goto LABEL002
Endif
If (Upper(Left(STRING021, 4)) == "/PUB") Then
Gosub LABEL022
Goto LABEL002
Endif
If (Upper(Left(STRING021, 3)) == "/P,") Then
Gosub LABEL026
Goto LABEL002
Endif
If (Upper(Left(STRING021, 2)) == "/C") Then
Gosub LABEL027
Goto LABEL002
Endif
If (Upper(Left(STRING021, 4)) == "/W,S") Then
Gosub LABEL034
Goto LABEL002
Endif
If (Upper(Left(STRING021, 2)) == "/W") Then
Gosub LABEL035
Goto LABEL002
Endif
If (Upper(Left(STRING021, 2)) == "/H") Then
Gosub LABEL038
Goto LABEL002
Endif
If (Upper(Left(STRING021, 2)) == "/?") Then
Gosub LABEL041
Goto LABEL002
Endif
If (Upper(Left(STRING021, 4)) == "HELP") Then
Gosub LABEL041
Goto LABEL002
Endif
If (Upper(Left(STRING021, 4)) == "MENU") Then
Gosub LABEL041
Goto LABEL002
Endif
If (Upper(Left(STRING021, 4)) == "/TOP") Then
Gosub LABEL042
Goto LABEL002
Endif
If (Upper(Left(STRING021, 2)) == "/S") Then
Gosub LABEL039
Gosub LABEL041
Goto LABEL002
Endif
If (Upper(Left(STRING021, 4)) == "STAT") Then
Gosub LABEL039
Gosub LABEL041
Goto LABEL002
Endif
If (Upper(Left(STRING021, 2)) == "/T") Then
Gosub LABEL040
Gosub LABEL041
Goto LABEL002
Endif
If (Upper(Left(STRING021, 4)) == "TIME") Then
Gosub LABEL040
Gosub LABEL041
Goto LABEL002
Endif
If (Upper(Left(STRING021, 4)) == "DATE") Then
Gosub LABEL040
Gosub LABEL041
Goto LABEL002
Endif
If (Upper(Left(STRING021, 2)) == "/Q") Then
Goto LABEL056
Else
Select Case (Upper(Left(STRING021, 4)))
Case "QUIT"
Goto LABEL056
Case "EXIT"
Goto LABEL056
Case "/G"
Goto LABEL056
Endif
End Select
If (Left(STRING021, 1) == "/") Then
FreshLine
PrintLn STRING045 + STRING021 + " " + STRING046
FreshLine
Goto LABEL002
Endif
If (Len(STRING021) < " ") Then
Goto LABEL002
Endif
INTEGER005 = 0
For INTEGER005 = 1 To INTEGER019
STRING028 = ""
STRING029 = ""
INTEGER007 = 50
STRING028 = STRING021
RdUNet INTEGER005
If ((INTEGER005 <> PcbNode()) && (Left(UN_Oper(), 7) == "HOT TUB")) Then
Gosub LABEL003
Endif
Next
Goto LABEL002
:LABEL003
FClose 1
STRING010 = PPEPath() + "HOTDATA." + String(INTEGER005)
FAppend 1, STRING010, 2, 0
If (Ferr(1)) Then
Goto LABEL003
Endif
FreshLine
While (Len(STRING028) >= INTEGER007) Do
INTEGER006 = Len(STRING028)
STRING030 = Mid(STRING028, INTEGER007, 1)
While (STRING030 <> " ") Do
INTEGER007 = INTEGER007 - 1
STRING030 = Mid(STRING028, INTEGER007, 1)
If (INTEGER007 == 0) Then
INTEGER007 = 50
STRING030 = " "
Endif
EndWhile
STRING029 = Mid(STRING028, 1, INTEGER007)
STRING020 = STRING027 + STRING040 + STRING029
If (INTEGER006 < 50) Then
STRING028 = Mid(STRING028, INTEGER007 + 1, INTEGER006 - INTEGER007 - 1)
Else
STRING028 = Mid(STRING028, INTEGER007 + 1, INTEGER006 - INTEGER007)
Endif
:LABEL004
FPutLn 1, STRING020
If (Ferr(1)) Then
:LABEL005
FClose 1
FAppend 1, STRING010, 2, 0
If (Ferr(1)) Then
Goto LABEL005
Endif
Goto LABEL004
Endif
INTEGER007 = 50
EndWhile
STRING020 = STRING027 + STRING040 + STRING028
FPutLn 1, STRING020
FClose 1
Return
:LABEL006
FreshLine
STRING028 = ""
STRING029 = ""
INTEGER007 = 50
INTEGER005 = 0
INTEGER004 = 0
For INTEGER006 = 1 To 3
If ((Asc(Mid(STRING021, INTEGER006 + 3, 1)) > 47) && (Asc(Mid(STRING021, INTEGER006 + 3, 1)) < 58)) Then
INTEGER005 = Mid(STRING021, 4, INTEGER006)
INTEGER004 = INTEGER006
Endif
Next
If (INTEGER005 > String(INTEGER019)) Then
PrintLn STRING049 + String(INTEGER005) + " " + STRING050
Goto LABEL002
Endif
RdUNet INTEGER005
STRING028 = Mid(STRING021, 5 + INTEGER004, Len(STRING021) - 4 + INTEGER004)
:LABEL007
FClose 1
STRING010 = PPEPath() + "HOTDATA." + String(INTEGER005)
FAppend 1, STRING010, 2, 0
If (Ferr(1)) Then
Goto LABEL007
Endif
FreshLine
PrintLn STRING051 + " " + String(INTEGER005)
FPutLn 1, "*" + Chr(7) + STRING059 + " " + STRING023 + "@X0F"
While (Len(STRING028) >= INTEGER007) Do
INTEGER006 = Len(STRING028)
STRING030 = Mid(STRING028, INTEGER007, 1)
While (STRING030 <> " ") Do
INTEGER007 = INTEGER007 - 1
STRING030 = Mid(STRING028, INTEGER007, 1)
If (INTEGER007 == 0) Then
INTEGER007 = 50
STRING030 = " "
Endif
EndWhile
STRING029 = Mid(STRING028, 1, INTEGER007)
STRING020 = "*@X0D(@X0E" + STRING026 + "@X0D)[@X0B" + STRING023 + STRING032 + "@X0D] @X0F: " + STRING040 + STRING029
If (INTEGER006 < 50) Then
STRING028 = Mid(STRING028, INTEGER007 + 1, INTEGER006 - INTEGER007 - 1)
Else
STRING028 = Mid(STRING028, INTEGER007 + 1, INTEGER006 - INTEGER007)
Endif
:LABEL008
FPutLn 1, STRING020
If (Ferr(1)) Then
:LABEL009
FClose 1
FAppend 1, STRING010, 2, 0
If (Ferr(1)) Then
Goto LABEL009
Endif
Goto LABEL008
Endif
INTEGER007 = 50
EndWhile
STRING020 = "*@X0D(@X0E" + STRING026 + "@X0D)[@X0B" + STRING023 + STRING032 + "@X0D] @X0F: " + STRING040 + STRING028
FPutLn 1, STRING020
FClose 1
Return
:LABEL010
DispFile STRING035, 2 + 1 + 4
FreshLine
Return
:LABEL011
FreshLine
INTEGER004 = 0
INTEGER005 = 0
For INTEGER006 = 1 To 3
If ((Asc(Mid(STRING021, INTEGER006 + 3, 1)) > 47) && (Asc(Mid(STRING021, INTEGER006 + 3, 1)) < 58)) Then
INTEGER005 = Mid(STRING021, 4, INTEGER006)
INTEGER004 = INTEGER006
Endif
Next
If (INTEGER005 > String(INTEGER019)) Then
PrintLn STRING047 + String(INTEGER019) + " " + STRING048
Goto LABEL002
Endif
RdUNet INTEGER005
If (Left(UN_Oper(), 7) <> "HOT TUB") Then
PrintLn STRING049 + String(INTEGER005) + " " + STRING050
Return
Endif
Frewind 4
STRING028 = ""
STRING029 = ""
STRING020 = ""
:LABEL012
If (Ferr(4)) Goto LABEL013
FGet 4, STRING028
FGet 4, STRING029
STRING028 = RTrim(STRING028, " ")
If (STRING028 == Upper(Mid(STRING021, 5 + INTEGER004, Len(STRING021) - 4 + INTEGER004))) Then
STRING029 = RTrim(STRING029, STRING011)
STRING038 = UN_Name()
Gosub LABEL053
STRING020 = String(INTEGER009) + "-" + "@X0B" + STRING023 + STRING029
STRING031 = STRING020
FreshLine
Gosub LABEL050
PrintLn "@X0B" + STRING023 + STRING029
Return
Endif
Goto LABEL012
:LABEL013
PrintLn STRING052 + Upper(Mid(STRING021, 5 + INTEGER004, Len(STRING021) - 4 + INTEGER004)) + " " + STRING046
FreshLine
Return
:LABEL014
FreshLine
INTEGER004 = 0
INTEGER005 = 0
For INTEGER006 = 1 To 3
If ((Asc(Mid(STRING021, INTEGER006 + 4, 1)) > 47) && (Asc(Mid(STRING021, INTEGER006 + 4, 1)) < 58)) Then
INTEGER005 = Mid(STRING021, 5, INTEGER006)
INTEGER004 = INTEGER006
Endif
Next
If (INTEGER005 > String(INTEGER019)) Then
PrintLn STRING047 + String(INTEGER019) + " " + STRING048
Goto LABEL002
Endif
RdUNet INTEGER005
If (Left(UN_Oper(), 7) <> "HOT TUB") Then
PrintLn STRING049 + String(INTEGER005) + " " + STRING050
Return
Endif
Frewind 4
STRING028 = ""
STRING029 = ""
STRING020 = ""
:LABEL015
If (Ferr(4)) Goto LABEL016
FGet 4, STRING028
FGet 4, STRING029
STRING028 = RTrim(STRING028, " ")
If (STRING028 == Upper(Mid(STRING021, 6 + INTEGER004, Len(STRING021) - 5 + INTEGER004))) Then
STRING029 = RTrim(STRING029, STRING011)
STRING038 = UN_Name()
Gosub LABEL053
STRING020 = "*@X0B" + STRING023 + STRING029
STRING031 = STRING020
PrintLn STRING051 + " " + String(INTEGER005)
FreshLine
FClose 1
STRING010 = PPEPath() + "HOTDATA." + String(INTEGER005)
FAppend 1, STRING010, 2, 0
FPutLn 1, "*" + Chr(7) + STRING059 + " " + STRING023 + "@X0F"
FPutLn 1, STRING031
FClose 1
PrintLn Mid(STRING031, 2, Len(STRING031) - 2)
Return
Endif
Goto LABEL015
:LABEL016
PrintLn STRING052 + Upper(Mid(STRING021, 6 + INTEGER004, Len(STRING021) - 5 + INTEGER004)) + " " + STRING046
FreshLine
Return
:LABEL017
FreshLine
RdUNet PcbNode()
If (UN_Oper() == "HOT TUB 1") Then
Gosub LABEL046
PrintLn STRING053
PrintLn STRING054
Goto LABEL002
Endif
FOpen 3, PPEPath() + "TUBDATA." + String(INTEGER009), 2, 0
FGet 3, STRING029
If (STRING029 == "PUBLIC") Then
Gosub LABEL046
PrintLn STRING055
PrintLn STRING056
FClose 3
Goto LABEL002
Endif
Newlines 1
PrintLn "@X07 Node Callers in the Hot Tubs"
PrintLn "@X08------ -------------------------"
For INTEGER005 = 1 To INTEGER019
RdUNet INTEGER005
If (Left(UN_Oper(), 7) == "HOT TUB") Then
PrintLn " @X0E(@X0F" + String(INTEGER005) + "@X0E) @X0F" + UN_Name()
Endif
Next
Newlines 1
InputStr STRING058, STRING028, 10, 3, Mask_Num(), 64
RdUNet STRING028
If (STRING028 == PcbNode()) Then
PrintLn STRING057
Goto LABEL002
Endif
If (Left(UN_Oper(), 7) <> "HOT TUB") Then
PrintLn STRING049 + String(INTEGER005) + " " + STRING050
Newlines 1
Goto LABEL002
Endif
Newlines 1
FClose 3
FAppend 3, PPEPath() + "TUBDATA." + String(INTEGER009), 2, 0
FPutLn 3, UN_Name()
FClose 3
FClose 1
FAppend 1, STRING010, 2, 0
FPutLn 1, "*" + Chr(7) + STRING059 + STRING023 + "@X0F"
FPutLn 1, "*" + STRING060 + String(INTEGER009) + "@X0F"
FreshLine
PrintLn STRING061 + STRING028 + "@X0F"
FClose 1
Return
:LABEL018
FreshLine
RdUNet PcbNode()
If (UN_Oper() == "HOT TUB 1") Then
Gosub LABEL046
PrintLn STRING062
PrintLn STRING063
Goto LABEL002
Endif
If (Exist(PPEPath() + "TUBDATA." + String(INTEGER009))) Then
FClose 3
FOpen 3, PPEPath() + "TUBDATA." + String(INTEGER009), 2, 0
FGet 3, STRING029
If (STRING029 == "PRIVATE") Then
PrintLn STRING064 + String(INTEGER009) + " " + STRING065
FClose 3
Goto LABEL002
Goto LABEL021
Endif
FGet 3, STRING029
While (Exist(PPEPath() + "TEMPTUB." + String(INTEGER009))) Do
Print "."
EndWhile
FreshLine
FClose 5
FCreate 5, PPEPath() + "TEMPTUB" + String(INTEGER009), 2, 0
FPutLn 5, "PRIVATE"
FPutLn 5, STRING029
:LABEL019
If (Ferr(3)) Goto LABEL020
FGet 3, STRING029
FPutLn 5, STRING029
Goto LABEL019
:LABEL020
FClose 5
FClose 3
Copy PPEPath() + "TEMPTUB" + String(INTEGER009), PPEPath() + "TUBDATA." + String(INTEGER009)
Delete PPEPath() + "TEMPTUB" + String(INTEGER009)
PrintLn STRING064 + String(INTEGER009) + " " + STRING066
STRING020 = String(INTEGER009) + "-@X0C" + STRING023 + " " + STRING067
Gosub LABEL050
FreshLine
:LABEL021
Goto LABEL002
Endif
Return
:LABEL022
FreshLine
RdUNet PcbNode()
If (UN_Oper() == "HOT TUB 1") Then
Gosub LABEL046
PrintLn STRING053
Goto LABEL002
Endif
If (Exist(PPEPath() + "TUBDATA." + String(INTEGER009))) Then
FClose 3
FOpen 3, PPEPath() + "TUBDATA." + String(INTEGER009), 0, 0
FGet 3, STRING029
If (STRING029 == "PUBLIC") Then
PrintLn STRING064 + String(INTEGER009) + " " + STRING068
FClose 3
Goto LABEL002
Goto LABEL025
Endif
FGet 3, STRING029
While (Exist(PPEPath() + "TEMPTUB." + String(INTEGER009))) Do
Print "."
EndWhile
FreshLine
FClose 5
FCreate 5, PPEPath() + "TEMPTUB" + String(INTEGER009), 2, 3
FPutLn 5, "PUBLIC"
FPutLn 5, STRING029
:LABEL023
If (Ferr(3)) Goto LABEL024
FGet 3, STRING029
FPutLn 5, STRING029
Goto LABEL023
:LABEL024
FClose 5
FClose 3
Copy PPEPath() + "TEMPTUB" + String(INTEGER009), PPEPath() + "TUBDATA." + String(INTEGER009)
Delete PPEPath() + "TEMPTUB" + String(INTEGER009)
PrintLn STRING064 + String(INTEGER009) + " " + STRING069
STRING020 = String(INTEGER009) + "-@X0C" + STRING023 + " " + STRING070
Gosub LABEL050
FreshLine
:LABEL025
Goto LABEL002
Endif
Return
:LABEL026
FreshLine
INTEGER004 = 0
For INTEGER006 = 1 To 3
If ((Asc(Mid(STRING021, INTEGER006 + 3, 1)) > 47) && (Asc(Mid(STRING021, INTEGER006 + 3, 1)) < 58)) Then
INTEGER005 = Mid(STRING021, 4, INTEGER006)
INTEGER004 = INTEGER006
Endif
Next
GetAltUser INTEGER005
If (INTEGER005 > String(INTEGER019)) Then
PrintLn STRING047 + String(INTEGER019) + " " + STRING048
Goto LABEL002
Endif
RdUNet INTEGER005
If (Left(UN_Oper(), 7) == "HOT TUB") Then
PrintLn STRING049 + String(INTEGER005) + " " + STRING087
Goto LABEL002
Endif
If ((UN_Stat() <> "A") && (UN_Stat() <> "G")) Then
PrintLn STRING049 + String(INTEGER005) + " " + STRING071
Goto LABEL002
Endif
Broadcast INTEGER005, INTEGER005, STRING072 + " From " + STRING023 + " - " + Mid(STRING021, INTEGER004 + 5, Len(STRING021) - INTEGER004 + 4)
PrintLn "@X0A" + STRING072 + " @X0B" + STRING023 + "@X0A - @X0E" + Mid(STRING021, INTEGER004 + 5, Len(STRING021) - INTEGER004 + 4) + "@X0F"
PrintLn STRING073 + String(INTEGER005) + "@X0F"
FreshLine
Return
:LABEL027
RdUNet PcbNode()
INTEGER007 = INTEGER009
FreshLine
PrintLn STRING074
PrintLn STRING076 + UN_Oper() + "@X0F"
FreshLine
:LABEL028
InputInt STRING077, INTEGER009, 1
FreshLine
If (INTEGER009 > 255) Then
PrintLn STRING078 + String(INTEGER009) + " " + STRING079
Goto LABEL028
Endif
If (INTEGER009 < 1) Then
PrintLn STRING078 + String(INTEGER009) + " " + STRING079
Goto LABEL028
Endif
INTEGER016 = 0
For INTEGER005 = 1 To INTEGER019
RdUNet INTEGER005
For INTEGER006 = 1 To 3
If (Right(UN_Oper(), INTEGER006) == String(INTEGER009)) Then
INTEGER016 = 1
Endif
Next
Next
If (INTEGER016 == 0) Then
Delete PPEPath() + "TUBDATA." + String(INTEGER009)
Endif
If (Exist(PPEPath() + "TUBDATA." + String(INTEGER009))) Then
FClose 3
FOpen 3, PPEPath() + "TUBDATA." + String(INTEGER009), 0, 0
FGet 3, STRING029
FGet 3, STRING030
If (STRING029 == "PRIVATE") Then
:LABEL029
If (Ferr(3)) Goto LABEL030
FGet 3, STRING030
If (STRING030 == STRING023) Then
FClose 3
Goto LABEL033
Endif
Goto LABEL029
:LABEL030
PrintLn STRING064 + String(INTEGER009) + " " + STRING065
Print STRING075
Frewind 3
FGet 3, STRING030
FGet 3, STRING030
FGet 3, STRING030
PrintLn "@X0B" + STRING030 + "@X0F"
:LABEL031
If (Ferr(3)) Goto LABEL032
FGet 3, STRING030
If (STRING030 > "") Then
PrintLn " @X0E" + STRING030 + "@X0F"
Endif
Goto LABEL031
:LABEL032
PrintLn STRING080
INTEGER009 = INTEGER007
FClose 3
Goto LABEL002
Else
STRING022 = STRING030
PrintLn STRING081 + STRING030 + " @X0F"
Endif
Else
FClose 3
FAppend 3, PPEPath() + "TUBDATA." + String(INTEGER009), 2, 0
FPutLn 3, "PUBLIC"
FPutLn 3, "GENERAL DISCUSSION"
FPutLn 3, STRING023
FClose 3
Endif
:LABEL033
PrintLn STRING082 + String(INTEGER009) + "@X0F"
STRING031 = "HOT TUB " + String(INTEGER009)
RdUNet PcbNode()
WrUNet PcbNode(), "G", STRING023, UN_City(), STRING031, ""
STRING027 = String(INTEGER009) + "-@X0D(@X0E" + STRING026 + "@X0D)[@X0B" + STRING023 + STRING032 + "@X0D] @X0F: "
STRING020 = String(INTEGER007) + "-@X0B" + STRING023 + " " + STRING084
Gosub LABEL050
STRING020 = String(INTEGER007) + "-" + STRING085 + " " + String(INTEGER009) + "@X0F"
Gosub LABEL050
STRING020 = String(INTEGER009) + "-@X0B" + STRING023 + " " + STRING086
Gosub LABEL050
PrintLn STRING083 + String(INTEGER009) + "@X0F"
FClose 3
Return
:LABEL034
INTEGER006 = 0
FreshLine
Newlines 1
PrintLn "@POFF@@X07Node Status Caller"
PrintLn "@X08---- --------------------- -----------------------------------------"
For INTEGER005 = 1 To INTEGER019
RdUNet INTEGER005
If (INTEGER005 == PcbNode()) Then
WrUNet PcbNode(), "G", STRING023, UN_City(), "HOT TUB " + String(INTEGER009), ""
Endif
Select Case (UN_Stat())
Case "A"
STRING028 = "Available to Chat "
Case "G"
STRING028 = "Chatting in HOT TUB "
Case "B"
STRING028 = "Out of Code in DOOR "
Case "C"
STRING028 = "Entering a Message "
Case "D"
STRING028 = "Out of Code in DOOR "
Case "E"
STRING028 = "Entering a Message "
Case "F"
STRING028 = "Transferring a File "
Case "L"
STRING028 = "Auto Logoff Pending "
Case "M"
STRING028 = "Message "
Case "N"
STRING028 = "CHATTING Private "
Case "O"
STRING028 = "Logging into System "
Case "P"
STRING028 = "Paging the Sysop "
Case "R"
STRING028 = "CHAT Request Sent "
Case "S"
STRING028 = "Entering a Message "
Case "T"
STRING028 = "Transferring a File "
Case "U"
STRING028 = "Unavailable for PAGE "
Case "W"
STRING028 = "Waiting for Node "
Case "X"
STRING028 = "Drop to DOS Pending "
Case "Y"
STRING028 = "No Caller this Node "
Case "Z"
STRING028 = "No Caller this Node "
Case Else
STRING028 = "No Caller this Node "
End Select
Gosub LABEL045
Print "@X0F " + String(INTEGER005)
Forward 3 - Len(String(INTEGER005))
PrintLn " " + STRING028 + " " + UN_Name() + STRING033 + UN_City()
INTEGER006 = INTEGER006 + 1
If (INTEGER006 == 19) Then
INTEGER006 = 1
STRING028 = "Y"
FreshLine
Newlines 1
InputYN "Do you want to continue display", STRING028, 10
If (Upper(STRING028) == "N") Then
Return
Endif
FreshLine
Newlines 1
STRING028 = ""
Endif
Next
FreshLine
Newlines 1
Return
:LABEL035
FreshLine
Newlines 1
PrintLn "@PON@@X07Node Tub Number Tub Topic Caller Tub Status"
PrintLn "@X08---- ------------ -------------------- ------------------ ------------"
For INTEGER005 = 1 To INTEGER019
RdUNet INTEGER005
If (Left(UN_Oper(), 7) == "HOT TUB") Then
Gosub LABEL045
If (UN_Oper() == "HOT TUB 1") Then
STRING030 = "GENERAL DISCUSSION"
Endif
INTEGER004 = 0
STRING031 = ""
For INTEGER006 = 1 To 3
If ((Asc(Mid(UN_Oper(), INTEGER006 + 8, 1)) > 47) && (Asc(Mid(UN_Oper(), INTEGER006 + 8, 1)) < 58)) Then
STRING031 = Mid(UN_Oper(), 9, INTEGER006)
INTEGER004 = INTEGER006
Endif
Next
If (Exist(PPEPath() + "TUBDATA." + STRING031)) Then
FClose 3
FOpen 3, PPEPath() + "TUBDATA." + STRING031, 2, 0
FGet 3, STRING030
FGet 3, STRING030
FClose 3
Endif
STRING028 = Right(UN_Oper(), 1)
If (FileInf(PPEPath() + "TUBDATA." + STRING028, 1)) Then
FClose 3
FOpen 3, PPEPath() + "TUBDATA." + STRING028, 0, 0
FGet 3, STRING029
If (STRING029 == "PRIVATE") Then
STRING037 = "PRIVATE"
Goto LABEL036
Endif
STRING037 = "PUBLIC"
:LABEL036
FClose 3
Goto LABEL037
Endif
STRING037 = "PUBLIC"
:LABEL037
Print "@X0F " + String(INTEGER005)
Forward 3 - Len(String(INTEGER005))
Print " " + UN_Oper()
Forward 22 - GetX()
Print STRING030
Forward 44 - GetX()
Print UN_Name()
Forward 64 - GetX()
PrintLn STRING037
If (INTEGER005 == PcbNode()) Then
WrUNet PcbNode(), "G", STRING023, UN_City(), "HOT TUB " + String(INTEGER009), ""
Endif
Endif
Next
Print "@POFF@"
FreshLine
Newlines 1
Return
:LABEL038
Cls
DispFile STRING015, 2 + 1 + 4
Goto LABEL002
Return
:LABEL039
FreshLine
DispFile STRING016, 2 + 1 + 4
FreshLine
Return
:LABEL040
FreshLine
DispFile STRING088, 2 + 1 + 4
FreshLine
Return
:LABEL041
FreshLine
DispFile STRING017, 2 + 1 + 4
FreshLine
Return
:LABEL042
FreshLine
RdUNet PcbNode()
If (UN_Oper() == "HOT TUB 1") Then
Gosub LABEL046
PrintLn "@X0AYou cannot change the topic of tub # @X0E1@X0A!@X0F"
PrintLn "@X0ABecause it is a public tub only.@X0F"
Goto LABEL002
Endif
If (Exist(PPEPath() + "TUBDATA." + String(INTEGER009))) Then
FClose 3
FOpen 3, PPEPath() + "TUBDATA." + String(INTEGER009), 2, 0
FGet 3, STRING029
FGet 3, STRING029
Newlines 1
Print "@X0ACurrent topic is @X0E" + STRING029 + "@X0F"
Newlines 1
STRING030 = "Y"
InputYN "Do you want to change the topic", STRING030, 15
FreshLine
If (Upper(STRING030) == "N") Then
Goto LABEL002
Endif
STRING030 = ""
InputStr "Enter the NEW Topic", STRING030, 15, 15, Mask_Ascii(), 64 + 2 + 4
FreshLine
While (Exist(PPEPath() + "TEMPTUB." + String(INTEGER009))) Do
Print "."
EndWhile
FreshLine
Frewind 3
FClose 5
FCreate 5, PPEPath() + "TEMPTUB" + String(INTEGER009), 2, 0
FGet 3, STRING029
FPutLn 5, STRING029
FGet 3, STRING029
FPutLn 5, STRING030
STRING029 = ""
:LABEL043
If (Ferr(3)) Goto LABEL044
FGet 3, STRING029
FPutLn 5, STRING029
Goto LABEL043
:LABEL044
FClose 5
FClose 3
Copy PPEPath() + "TEMPTUB" + String(INTEGER009), PPEPath() + "TUBDATA." + String(INTEGER009)
Delete PPEPath() + "TEMPTUB" + String(INTEGER009)
Endif
STRING022 = STRING030
STRING028 = "@X0B" + STRING023 + "@X0A Changed this Tubs topic to @X0E" + STRING030 + "@X0F"
Print STRING028
STRING020 = String(INTEGER009) + "-" + STRING028
Gosub LABEL050
Return
Goto LABEL002
:LABEL045
If (UN_City() > "") Then
STRING033 = " - "
Else
STRING033 = " "
Endif
Return
:LABEL046
Print Chr(7)
MPrint Chr(7)
Return
:LABEL047
If (FileInf(PPEPath() + "HOTDATA." + STRING026, 1)) Then
FClose 2
FOpen 2, PPEPath() + "HOTDATA." + String(STRING026), 0, 3
If (Ferr(2)) Then
Goto LABEL047
Endif
STRING028 = ""
:LABEL048
If (Ferr(2)) Goto LABEL049
FGet 2, STRING028
If (STRING028 > "") Then
For INTEGER005 = 1 To 4
If (Mid(STRING028, INTEGER005, 1) == "-") Then
INTEGER006 = INTEGER005
Endif
Next
If (Left(STRING028, INTEGER006) == String(INTEGER009) + "-") Then
FreshLine
PrintLn Mid(STRING028, INTEGER006 + 1, Len(STRING028))
Endif
If (Left(STRING028, 1) == "*") Then
FreshLine
PrintLn Mid(STRING028, 2, Len(STRING028))
Endif
Endif
STRING028 = ""
Goto LABEL048
:LABEL049
FClose 2
Delete PPEPath() + "HOTDATA." + STRING026
RdUNet PcbNode()
WrUNet PcbNode(), "G", STRING023, UN_City(), "HOT TUB " + String(INTEGER009), ""
TIME001 = Time()
Endif
If ((MinLeft() == 5) && (INTEGER011 == 0)) Then
FreshLine
Gosub LABEL046
PrintLn "@X0A(5 Minute Warning)@X0F"
INTEGER011 = 1
Endif
If ((MinLeft() == 4) && (INTEGER012 == 0)) Then
FreshLine
Gosub LABEL046
PrintLn "@X0A(4 Minute Warning)@X0F"
INTEGER012 = 1
Endif
If ((MinLeft() == 3) && (INTEGER013 == 0)) Then
FreshLine
Gosub LABEL046
PrintLn "@X0A(3 Minute Warning)@X0F"
INTEGER013 = 1
Endif
If ((MinLeft() == 2) && (INTEGER014 == 0)) Then
FreshLine
Gosub LABEL046
PrintLn "@X0A(2 Minute Warning)@X0F"
INTEGER014 = 1
Endif
If ((MinLeft() == 1) && (INTEGER015 == 0)) Then
FreshLine
Gosub LABEL046
PrintLn "@X0A(1 Minute Warning)@X0F"
Else
Return
:LABEL050
INTEGER005 = 0
For INTEGER005 = 1 To INTEGER019
RdUNet INTEGER005
If ((INTEGER005 <> PcbNode()) && (Left(UN_Oper(), 7) == "HOT TUB")) Then
:LABEL051
FClose 1
STRING010 = PPEPath() + "HOTDATA." + String(INTEGER005)
FAppend 1, STRING010, 2, 0
If (Ferr(1)) Then
Goto LABEL051
Endif
FPutLn 1, STRING020
FClose 1
Endif
Next
Return
:LABEL052
If (Exist(PPEPath() + "HOTDATA." + String(PcbNode()))) Then
Delete PPEPath() + "HOTDATA." + String(PcbNode())
Endif
Return
:LABEL053
STRING030 = ""
For INTEGER007 = 1 To Len(STRING029)
If (Upper(Mid(STRING029, INTEGER007, 12)) == "@HOT_OPTEXT@") Then
STRING030 = Mid(STRING029, 1, INTEGER007 - 1)
INTEGER003 = Len(STRING030)
STRING030 = STRING030 + STRING038
STRING030 = STRING030 + Mid(STRING029, INTEGER003 + 13, Len(STRING029) - INTEGER003 - 10)
STRING029 = STRING030
Endif
Next
Return
If (FileInf(PPEPath() + "HOTTUB." + String(INTEGER009), 1)) Then
FClose 3
Endif
Return
:LABEL054
Cls
Return
:LABEL055
Newlines 5
Forward 12
PrintLn "@X1E THIS PAUSE REMOVED WHEN REGISTERED @X0F"
Forward 12
PrintLn "@X1E DEMO VERSION ALLOWS 10 MINUTES PER CALL @X0F"
TIME001 = Time()
Newlines 2
INTEGER006 = Time() - TIME001
INTEGER005 = INTEGER006
Print 30 - INTEGER006
While (Time() - TIME001 < 30) Do
INTEGER006 = Time() - TIME001
If (INTEGER005 < INTEGER006) Then
Backup 3
Print " "
Backup 3
Print 30 - INTEGER006
INTEGER005 = INTEGER006
Endif
EndWhile
Backup 3
Print " "
Cls
Return
Cls
Gosub LABEL046
Gosub LABEL046
Gosub LABEL046
Newlines 3
Print "@X0F"
PrintLn " THIS SOFTWARE HAS BEEN PIRATED!"
Newlines 1
PrintLn " CALL JOE'S SOFTWARE STORE AT (317) 849-2196"
Newlines 1
PrintLn " For A $1000.00 REWARD upon conviction. "
Newlines 5
Wait
Goto LABEL057
Endif
:LABEL056
GetUser
If (INTEGER017 == 1) Then
Log U_Name() + " Exited Hot Chat", 0
Endif
If (INTEGER010 > 0) Then
AdjTime INTEGER010
Endif
STRING020 = "@X0B" + STRING023 + "@X0F " + ReadLine(STRING019, 2)
FreshLine
PrintLn STRING020
STRING020 = "*" + Chr(7) + STRING020
Gosub LABEL050
FClose 1
FClose 2
FClose 3
FClose 4
FClose 5
Print "@PON@"
If (Upper(Left(STRING021, 2)) == "/G") Then
Goodbye
Endif
:LABEL057
;------------------------------------------------------------------------------
;
; Usage report (before postprocessing)
;
; ■ Statements used :
;
; 5 Cls
; 1 Wait
; 307 Goto
; 304 Let
; 25 Print
; 71 PrintLn
; 174 If
; 5 DispFile
; 3 FCreate
; 10 FOpen
; 9 FAppend
; 50 FClose
; 31 FGet
; 23 FPutLn
; 3 GetUser
; 6 Delete
; 2 AdjTime
; 2 Log
; 2 InputStr
; 2 InputYN
; 1 InputInt
; 61 Gosub
; 31 Return
; 22 Newlines
; 1 Goodbye
; 1 Broadcast
; 20 RdUNet
; 5 WrUNet
; 6 Backup
; 7 Forward
; 52 FreshLine
; 1 MPrint
; 4 Frewind
; 3 Copy
; 1 GetAltUser
;
;
; ■ Functions used :
;
; 367 +
; 34 -
; 108 ==
; 14 <>
; 27 <
; 15 <=
; 21 >
; 32 >=
; 174 !
; 49 &&
; 25 ||
; 28 Len(
; 34 Upper()
; 39 Mid()
; 41 Left()
; 2 Right()
; 1 Space()
; 16 Ferr()
; 11 Chr()
; 10 Asc()
; 4 RTrim()
; 7 Time()
; 4 U_Name()
; 1 Sec()
; 1 Inkey()
; 83 String()
; 1 Mask_Num()
; 1 Mask_Ascii()
; 51 PPEPath()
; 21 PcbNode()
; 54 ReadLine()
; 22 UN_Stat()
; 10 UN_Name()
; 7 UN_City()
; 21 UN_Oper()
; 6 MinLeft()
; 12 Exist()
; 4 LangExt()
; 3 GetX()
; 3 FileInf()
;
;------------------------------------------------------------------------------
;
; Analysis flags : RAM
;
; R - Read user ■ 5
; User records are read, this may signify that someone wants to get
; various informations about a user (for example his password), but
; this may also be normal for a program accessing user records (for
; example a User Editor)
; ■ Search for : GETALTUSER
;
; A - Adjust online time remaining ■ 5
; Program modify the amount of online time remaining, this may
; be a way to bypass time limits
; ■ Search for : ADJTIME
;
; M - Send text to modem only ■ 4
; Some informations are sent only to the modem, not to the local
; screen, this is a well known way to make stealth backdoors, Check!
; ■ Search for : SENDMODEM, MPRINT, MPRINTLN
;
;------------------------------------------------------------------------------
;
; Postprocessing report
;
; 15 For/Next
; 9 While/EndWhile
; 119 If/Then or If/Then/Else
; 2 Select Case
;
;------------------------------------------------------------------------------
; AEGiS Corp - Break the routines, code against the machines!
;------------------------------------------------------------------------------